Application programs typically provide a graphical user interface through which users can navigate a menu hierarchy and select a menu item of interest. The graphical user interface may initially display top-level menu items such as “file,” “edit,” “view,” “insert,” and so on. Each top-level menu item may have second-level menu items. For example, the “file” menu item may have second-level menu items that include “new,” “open,” “close,” “save,” and so on. These second-level menu items may also have third-level menu items and so on. When a user selects a top-level menu item, the graphical user interface displays the second-level menu items associated with the selected top-level menu item. The graphical user interface may display the second-level menu items using a drop-down list, a menu ribbon, and so on. When a user selects a second-level menu item, then the graphical user interface displays any third-level menu items associated with the selected second-level menu item. When the user selects a menu item that has no lower level menu items (i.e., the selected menu item is a leaf menu item), then the graphical user interface may direct the application program to perform the action associated with that selected lower-level menu item. For example, the action may be to execute a computer program, display a dialog to solicit user input, and so on.
FIG. 1 is a diagram that illustrates a typical menu hierarchy. The menu hierarchy 100 includes first-level or top-level menu items 101 and 102. The top-level menu item 101 includes second-level menu items 111 and 112, and the top-level menu item 102 includes second-level menu items 121 and 122. The second-level menu item 121 has associated with it a command 131 that is performed when the second-level menu item 121 is selected. For example, if the top-level menu item is “file” and the second-level menu item is “save,” then the command may display a dialog box for saving the currently opened document. The second-level menu item 122 has associated with it a command 132 that is performed when the second-level menu item 122 is selected. The ellipses within the menu hierarchy indicate that there may be an arbitrary number of menu items at each level and an arbitrary number of levels.
FIG. 2 illustrates a typical user interface for selecting a menu item. The display page 200 includes a listing 201 of the top-level menu items. The shading of the top-level menu item “menu 3” indicates that it is currently selected. The display page 200 includes a listing 202 of the second-level menu items for “menu 3.” The shading of the second-level menu item “menu 3.1” indicates that it is currently selected. The display page 200 includes a listing 203 of the third-level menu items for “menu 3.1.”
Although navigating through a menu hierarchy may have an intuitive appeal to users, the complexity of some menu hierarchies makes it difficult for users to navigate to a menu item of interest for several reasons. First, a menu hierarchy may have hundreds of menu items with many menu items having many tens of child menu items. It can be time-consuming for a user to look through so many child menu items trying to identify the menu item of interest. Second, because there are so many menu items, it can be difficult for a developer of an application program to assign names to menu items that are both descriptive and easily understood by a large numbers of users. As a result, users may spend time looking through portions of the menu hierarchy that do not contain menu items of interest. Third, many application programs let end-users or third-party developers customize the menu hierarchy. For example, new menu items can be added for selecting new actions to be performed, names of existing menu items can be modified, and so on. As a result, users may not even know that menu items of interest may have been added or deleted from the menu hierarchy.